library(tidyverse)
library(shiny)
library(ggplot2)
library(CodeClanData)
library(plotly)
game_sales <- CodeClanData::game_sales
sales_genre <- game_sales %>%
group_by(genre, year_of_release) %>%
summarise(sales = round(mean(sales), 2), .groups = "keep") %>%
mutate(year_of_release = as.factor(year_of_release)) %>%
arrange(year_of_release) %>%
filter(year_of_release == "2012") %>%
ggplot(aes(x = genre,
y = sales,
fill = "coral"))+
geom_col()+
coord_flip()+
theme(panel.grid = element_blank(),
panel.background = element_blank(),
legend.position = "none")+
labs(x = "Genre",
y = "Sales (£m)")
ggplotly(sales_genre)
score_genre <- game_sales %>%
group_by(genre, year_of_release) %>%
summarise(user_score = round(mean(user_score), 2), .groups = "keep") %>%
mutate(year_of_release = as.factor(year_of_release)) %>%
arrange(year_of_release) %>%
filter(year_of_release == "2012") %>%
ggplot(aes(x = genre,
y = user_score,
fill = "coral"))+
geom_col()+
coord_flip()+
theme(panel.grid = element_blank(),
panel.background = element_blank(),
legend.position = "none")+
labs(x = "Genre",
y = "User Score")
ggplotly(score_genre)
year_vs_sales <- game_sales %>%
group_by(genre, year_of_release) %>%
summarise(sales = round(mean(sales), 2), .groups = "keep") %>%
filter(genre == "Action") %>%
ggplot(aes(x = year_of_release,
y = sales,
fill = genre))+
geom_col(show.legend = F)+
coord_flip()+
theme(panel.grid = element_blank(),
panel.background = element_blank())+
labs(x = "Release Year",
y = "Sales (£m)")
ggplotly(year_vs_sales)
year_vs_score <- game_sales %>%
group_by(genre, year_of_release) %>%
summarise(user_score = round(mean(user_score), 2), .groups = "keep") %>%
filter(genre == "Action") %>%
ggplot(aes(x = year_of_release,
y = user_score,
fill = genre))+
geom_col(show.legend = F)+
coord_flip()+
theme(panel.grid = element_blank(),
panel.background = element_blank())+
labs(x = "Release Year",
y = "User Score")
ggplotly(year_vs_score)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkoc2hpbnkpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShDb2RlQ2xhbkRhdGEpCmxpYnJhcnkocGxvdGx5KQoKYGBgCmBgYHtyfQpnYW1lX3NhbGVzIDwtIENvZGVDbGFuRGF0YTo6Z2FtZV9zYWxlcwpgYGAKCgoKYGBge3J9CnNhbGVzX2dlbnJlIDwtIGdhbWVfc2FsZXMgJT4lIAogIGdyb3VwX2J5KGdlbnJlLCB5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBzdW1tYXJpc2Uoc2FsZXMgPSByb3VuZChtZWFuKHNhbGVzKSwgMiksIC5ncm91cHMgPSAia2VlcCIpICU+JSAKICBtdXRhdGUoeWVhcl9vZl9yZWxlYXNlID0gYXMuZmFjdG9yKHllYXJfb2ZfcmVsZWFzZSkpICU+JSAKICBhcnJhbmdlKHllYXJfb2ZfcmVsZWFzZSkgJT4lIAogIGZpbHRlcih5ZWFyX29mX3JlbGVhc2UgPT0gIjIwMTIiKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZ2VucmUsCiAgICAgICAgICAgICB5ID0gc2FsZXMsCiAgICAgICAgICAgICBmaWxsID0gImNvcmFsIikpKwogIGdlb21fY29sKCkrCiAgY29vcmRfZmxpcCgpKwogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpKwogIGxhYnMoeCA9ICJHZW5yZSIsCiAgICAgICB5ID0gIlNhbGVzICjCo20pIikKYGBgCmBgYHtyfQpnZ3Bsb3RseShzYWxlc19nZW5yZSkKYGBgCgpgYGB7cn0Kc2NvcmVfZ2VucmUgPC0gZ2FtZV9zYWxlcyAlPiUgCiAgZ3JvdXBfYnkoZ2VucmUsIHllYXJfb2ZfcmVsZWFzZSkgJT4lIAogIHN1bW1hcmlzZSh1c2VyX3Njb3JlID0gcm91bmQobWVhbih1c2VyX3Njb3JlKSwgMiksIC5ncm91cHMgPSAia2VlcCIpICU+JSAKICBtdXRhdGUoeWVhcl9vZl9yZWxlYXNlID0gYXMuZmFjdG9yKHllYXJfb2ZfcmVsZWFzZSkpICU+JSAKICBhcnJhbmdlKHllYXJfb2ZfcmVsZWFzZSkgJT4lIAogIGZpbHRlcih5ZWFyX29mX3JlbGVhc2UgPT0gIjIwMTIiKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZ2VucmUsCiAgICAgICAgICAgICB5ID0gdXNlcl9zY29yZSwKICAgICAgICAgICAgIGZpbGwgPSAiY29yYWwiKSkrCiAgZ2VvbV9jb2woKSsKICBjb29yZF9mbGlwKCkrCiAgdGhlbWUocGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikrCiAgbGFicyh4ID0gIkdlbnJlIiwKICAgICAgIHkgPSAiVXNlciBTY29yZSIpCmBgYApgYGB7cn0KZ2dwbG90bHkoc2NvcmVfZ2VucmUpCmBgYAoKCmBgYHtyfQp5ZWFyX3ZzX3NhbGVzIDwtIGdhbWVfc2FsZXMgJT4lIAogIGdyb3VwX2J5KGdlbnJlLCB5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBzdW1tYXJpc2Uoc2FsZXMgPSByb3VuZChtZWFuKHNhbGVzKSwgMiksIC5ncm91cHMgPSAia2VlcCIpICU+JSAKICBmaWx0ZXIoZ2VucmUgPT0gIkFjdGlvbiIpICU+JSAKZ2dwbG90KGFlcyh4ID0geWVhcl9vZl9yZWxlYXNlLAogICAgICAgICAgICAgeSA9IHNhbGVzLAogICAgICAgICAgICAgZmlsbCA9IGdlbnJlKSkrCiAgZ2VvbV9jb2woc2hvdy5sZWdlbmQgPSBGKSsKICBjb29yZF9mbGlwKCkrCiAgdGhlbWUocGFuZWwuZ3JpZCA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9ibGFuaygpKSsKICBsYWJzKHggPSAiUmVsZWFzZSBZZWFyIiwKICAgICAgIHkgPSAiU2FsZXMgKMKjbSkiKQpgYGAKYGBge3J9CmdncGxvdGx5KHllYXJfdnNfc2FsZXMpCmBgYAoKCmBgYHtyfQp5ZWFyX3ZzX3Njb3JlIDwtIGdhbWVfc2FsZXMgJT4lIAogIGdyb3VwX2J5KGdlbnJlLCB5ZWFyX29mX3JlbGVhc2UpICU+JSAKICBzdW1tYXJpc2UodXNlcl9zY29yZSA9IHJvdW5kKG1lYW4odXNlcl9zY29yZSksIDIpLCAuZ3JvdXBzID0gImtlZXAiKSAlPiUgCiAgZmlsdGVyKGdlbnJlID09ICJBY3Rpb24iKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0geWVhcl9vZl9yZWxlYXNlLAogICAgICAgICAgICAgeSA9IHVzZXJfc2NvcmUsCiAgICAgICAgICAgICBmaWxsID0gZ2VucmUpKSsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEYpKwogY29vcmRfZmxpcCgpKwogIHRoZW1lKHBhbmVsLmdyaWQgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgcGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfYmxhbmsoKSkrCiAgbGFicyh4ID0gIlJlbGVhc2UgWWVhciIsCiAgICAgICB5ID0gIlVzZXIgU2NvcmUiKQpgYGAKYGBge3J9CmdncGxvdGx5KHllYXJfdnNfc2NvcmUpCmBgYAoK